﻿///////////////////////////////////////////////////////////////////////////////
/// Copyright (c) by longshuang@msn.cn 2014.
/// All rights reserved.
///
/// @File	: Engine.Guid.hpp
/// @Brief	: 统一平台的GUID（UUID）生成方式
/// @Author	: Leo Zhao <longshuang@msn.cn>
/// @Date	: 2014-12-23
///
/// CHANGELOG
/// 	2014-12-23	初版提交
///////////////////////////////////////////////////////////////////////////////
#ifndef		__ENGINE_GUID_INCLUDE__
#define		__ENGINE_GUID_INCLUDE__

#include	<cstdint>
#include	<string>

namespace Engine {

	/// @Brief	: 统一的Guid结构
	class Guid {
	public:
		Guid();
		Guid(uint8_t * pData);
		virtual ~Guid();

		/// @Brief	: 生成一个新的Guid
		/// @Param	: NONE
		/// @Return	: 新的Guid
		static Guid Generate();

		/// @Brief	: 得到原始的16个BYTE的数据
		/// @Param	: NONE
		/// @Return	: 返回生成的GUID原始数据
		uint8_t *	GetData() { return _pData; }

		/// @Brief	: 将GUID转换成16进制表示的字串（32位）
		/// @Param	: NONE
		/// @Return	: 32位16进制表示的字串
		std::string	ToString();

	private:
		uint8_t		_pData[16];

	};

}

#endif//!	__ENGINE_GUID_INCLUDE__
